<?php

//默认配置文件目录
define('CMS_CONFIG_PATH', EXTEND_PATH . 'config' . DS);


/**
 * 导入配置文件
 * @param string $filename 配置文件名
 * @param array $val 获取指定对象，留空获取全部
 * @param string $path 定义配置文件目录路径
 * @return 返回数据
 */
function getConfig($filename, $val = null, $path = CMS_CONFIG_PATH)
{
    //获取配置文件路径
    $_path =  $path . $filename . '.php';
    //判断配置文件是否存在
    if (file_exists($_path)) {
        //导入配置文件
        $con = require $_path;
        //判断是否指定对象
        if ($val == null) {
            //返回配置文件所有数据
            $data = $con;
        } else {
            //返回指定对象数据
            $data = isset($con[$val]) ? $con[$val] : null;
        }
        //返回数据
        return $data;
    } else {
        return null;
    }
}

/**
 * 批量保存
 * @param string $file 文件路径名
 * @param array $data 保存数据
 * @param string $path 定义配置文件目录路径
 */
function setConfigAll($file, $data, $path = CMS_CONFIG_PATH)
{
    $_path = $path . $file . ".php";
    //初始化
    $row = '';
    //循环遍历对象
    foreach ($data as $k => $v) {
        // 累计
        $row .= '   "' . $k . '" => ' . var_export($v, true) . ',
';
    }
    // 拼接字符串
    $_data = '<?php
return [
' . $row .
        '];';
    // 写出文件
    return file_put_contents($_path, $_data);
}

/**
 * 指定保存
 * @param string $file 文件路径名
 * @param array $data 保存数据
 * @param string $path 定义配置文件目录路径
 */
function setConfig($file, $data, $path = CMS_CONFIG_PATH)
{
    $_path = $path . $file . ".php";
    //获取源数据
    $dat = require $_path;
    //新旧数据合并
    $da = array_merge($dat, $data);
    //初始化
    $row = '';
    //循环遍历对象
    foreach ($da as $k => $v) {
        // 累计
        $row .= '   "' . $k . '" => ' . var_export($v, true) . ',
';
    }
    // 拼接字符串
    $_data = '<?php
return [
' . $row .
        '];';
    // 写出文件
    return file_put_contents($_path, $_data);
}

/**
 * 保存数组格式
 * @param string $file 文件路径名
 * @param array $data 保存数据
 * @param string $path 定义配置文件目录路径
 */
function setConfigArray($file, $data, $path = CMS_CONFIG_PATH)
{
    $_path = $path . $file . ".php";
    $dad = [];
    //判断文件是否存在
    if (file_exists($_path)) {
        //获取源数据
        $dat = require $_path;
    } else {
        // 拼接字符串
        $_init = '<?php
return [
];';
        //文件不存在初始化一个
        file_put_contents($_path, $_init);
        $dat  = [];
    }
    $data['inc_id'] = count($dat);
    //压入编码
    $dad[count($dat)] =  $data;
    //新旧数据合并
    $da = array_merge($dat, $dad);
    //初始化
    $row = '';
    //循环遍历对象
    foreach ($da as $k => $v) {
        // 累计
        $row .= '   "' . $k . '" => ' . var_export($v, true) . ',
';
    }
    // 拼接字符串
    $_data = '<?php
return [
' . $row .
        '];';
    // 写出文件
    return file_put_contents($_path, $_data);
}

/**
 * 初始化一个配置
 * @param string $filepath 保存文件路径名
 */
function initConfig($filepath)
{
    // 拼接字符串
    $_data = '<?php
return [
];';
    // 写出文件
    if (file_put_contents($filepath, $_data)) {
        sleep(10000);
        return require $_path;
    } else {
        return null;
    }
}

// 更新指定内容
function upConfig($file, $data, $inc_id, $path = CMS_CONFIG_PATH)
{
    $_path = $path . $file . ".php";
    $dad = [];
    //判断文件是否存在
    if (file_exists($_path)) {
        //获取源数据
        $dat = require $_path;
    } else {
        // 拼接字符串
        $_init = '<?php
return [
];';
        //文件不存在初始化一个
        file_put_contents($_path, $_init);
        $dat  = [];
    }

    //初始化
    $row = '';
    //循环遍历对象
    foreach ($dat as $k => $v) {
        // 修改内容
        if ($v['inc_id'] == $inc_id) {
            // 新旧数据合并
            $v = array_merge($v, $data);
        }
        // 累计
        $row .= '   "' . $k . '" => ' . var_export($v, true) . ',
';
    }
    // 拼接字符串
    $_data = '<?php
return [
' . $row .
        '];';
    // 写出文件
    return file_put_contents($_path, $_data);
}

//移除指定内容
function rmConfigArray($file, $id, $path = CMS_CONFIG_PATH)
{
    $_path = $path . $file . ".php";
    //获取源数据
    $dat = require $_path;
    //初始化
    $row = '';

    // if (count($dat) < $id) {
    //     return false;
    // }

    //循环遍历对象
    foreach ($dat as $k => $v) {
        //判断删除
        if ($v['inc_id'] != $id) {
            // 累计
            $row .= '   "' . $k . '" => ' . var_export($v, true) . ',
';
        }
    }

    // 拼接字符串
    $_data = '<?php
return [
' . $row .
        '];';
    // 写出文件
    return file_put_contents($_path, $_data);
}
